package com.swanclouds.api.systems;

import com.swanclouds.common.RestService;
import com.swanclouds.model.common.ActionResponse;
import com.swanclouds.model.common.ErrorResponse;
import com.swanclouds.model.systems.BIOSAttribute;
import com.swanclouds.redfish.systems.domain.Bios;
import com.swanclouds.redfish.systems.domain.FutureBIOSSettings;

/**
 * BIOS资源信息服务
 *
 * @author 张立强
 */
public interface BiosService extends RestService {

    /**
     * 查询BIOS资源信息
     * @return Bios
     */
    Bios get();

    /**
     * 查询 BIOS 设置资源信息
     * /redfish/v1/Systems/{system_id}/Bios/SD
     * @return the
     */
    FutureBIOSSettings getSD();

    /**
     * 修改 BIOS 密码
     * BMC只是修改BIOS密码，BIOS密码生效需重启OS，且如果OS重启前有多次设置，以最后一次的设置请求为准。
     *
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @param roleName [Supervisor: 修改BIOS管理员密码, UserPassword: 修改BIOS普通用户密码]
     * @return ActionResponse
     */
    ActionResponse changePassword(String oldPassword, String newPassword, String roleName);

    /**
     * 修改 BIOS 资源信息
     * @param attribute BIOS属性
     * @return ActionResponse
     */
    ActionResponse changeAttribute(BIOSAttribute attribute);

    /**
     * 恢复 BIOS 属性默认值
     * @return  ErrorResponse
     */
    ErrorResponse resetBios();
}
